////////////////////////////////////////////////////////////////////////////////

#ifndef _BUTTON_H_
#define _BUTTON_H_

#ifndef _WIDGET_H_
#include "widget.h"
#endif

////////////////////////////////////////////////////////////////////////////////

/** Button widget
*
*  @author   Anastasia Karpinska
*  @since    May 29th, 2010
*  @updated  May 29th, 2010
*/
class Button : public Widget
{
////////////////////////////////////////////////////////////////////////////////

public:

////////////////////////////////////////////////////////////////////////////////


    /** Button states */
    enum States
    {
        NORMAL,
        ONFOCUS,
        ONCLICK
    };


////////////////////////////////////////////////////////////////////////////////


    /** Constructor */
    Button( int _w, int _h, int _x, int _y, Widget* _parent = NULL );


    /** Resize widget */
    void Resize();


    /** Key change handler */
    virtual void OnKeyChanged();


    /** Mouse position change handler */
    virtual void OnMousePositionChanged( int _x, int _y );


////////////////////////////////////////////////////////////////////////////////

private:

    /** Normal button */
    WidgetAutoPtr m_Normal;


    /** Button on focus */
    WidgetAutoPtr m_OnFocus;


    /** Clicked button */
    WidgetAutoPtr m_OnClick;


    /** Current button state */
    States m_State;


////////////////////////////////////////////////////////////////////////////////

};

////////////////////////////////////////////////////////////////////////////////

#endif
